﻿# -*- coding: utf-8 -*-
#!/usr/bin/python
#FileName:Ftpupload.py
#python v3.1 for windows
import os
import sys
import time
import readcfg
from ftplib import FTP	# 引入FTP库


def ftpupload(Server,UserName,PassWord,Port):
	
	today = time.strftime('%Y%m%d')		#取出当前年月日
	target1 = today+'.7z'
	bakname = readcfg.backupdir+'\\'+target1 # 备份文件的全路径 
	yesterday = time.strftime('%Y%m%d',time.localtime(time.time() - 24*60*60)) # 取出昨天的时间
	delfile =  yesterday+'.tar.gz' # 定义昨天已经好备份的文件名称
	
	print ("ooooooooo=Upload FTP "+(Server)+"=ooooooooo")	# 把备份文件上传到FTP
	print
	f = FTP()	# 定义连接方法
	#f.set_debuglevel(2) # 打开调试级别2，显示详细信息
	try:
		f.connect(Server,Port) #  连接FTP服务器
		f.login(UserName,PassWord)	# 使用用户名密码登陆，为空匿名用户登陆
	except:	# 登陆失败抛出异常
		print (">>>>>Login Failed")
		print
		print (">>>>>FTP upload Failed.....")
		sys.exit()
	else:
		print (("<<<>>>Welcome:") + f.getwelcome() + "<<<>>>") # 登陆成功获取ftp的welcome版本等信息。
	try:
		f.cwd(readcfg.remotepath) # 进入到ftp的（remotepath）自定义目录下
	except:				# 如果没能正常进入目录则抛出异常，进入目录失败。
		print (">>>>>Join the directory failed!")  
		print
		sys.exit()
	else:
		if os.path.isfile(delfile) == True:
			try:
				f.delete(delfile)	# 删除昨天的备份文件
			except:	# 删除旧文件失败抛出异常
				print (">>>>>Failed to delete FTP old files")
	bakfile = os.path.basename(bakname)	# 获得文件的名称
	try:
		localfile = open(bakname,'rb') # 读取要备份上传文件的全路径
	except:
		print
		print (">>>>>Open "+bakfile+" Failed!")
		sys.exit()
	try:
		f.storbinary('STOR %s' % bakfile,localfile) # 以二进制格式上传文件到FTP
	except:	# 上传出错抛出异常，上传失败
		print
		print (">>>>>FTP upload Failed!")
	else:	# 否则上传成功
		print
		print ("<<<>>>FTP upload Success!<<<>>>")
	localfile.close() # 关闭打开读取的文件
	f.quit()	#  退出FTP
	sys.exit()	# 程序退出